package com.cskaoyan.checkable;

/*
      运行时异常 VS 编译时异常
   所有的RuntimeException类及其子类的实例被称为运行时异常，其他的异常就是编译时异常

    运行时异常
      无需显示处理，也可以和编译时异常一样处理

    编译时异常
     Java程序必须显示处理，否则程序就会发生错误,无法通过编译

 */
public class Demo1 {


    public static void main(String[] args) {

        TestExceptionType obj = new TestExceptionType();

        // 测试编译时异常，是否一定会发生
        obj.checkable();
    }

}

class TestExceptionType implements Cloneable {
    /*
        针对于运行时异常
     */
    public void runtime() {
        int i = 10;
        int j = 0;
        // 只要做除法运算，理论上就有可能发生除0异常
        int result = i / j;
    }

    /*
          针对编译时异常
     */
    public void checkable() {

        TestExceptionType obj = new TestExceptionType();
        // 调用clone方法的时候，该方法可能会产生编译时异常
        // 建议不要一开始就使用快捷键  ctrl + alt + t
        try {
            obj.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }

}
